﻿#region Using Statements
using DirectZZT.Shared.World;
#endregion

namespace DirectZZT.Shared.Gameplay
{
    /// <summary>
    /// Defines mechanisms to control the game.
    /// </summary>
    public interface IGameController
    {
        /// <summary>
        /// Gets/sets the currently used feature set.
        /// The feature set is determined by the currently loaded world.
        /// </summary>
        FeatureSet CurrentFeatureSet { get; set; }
        /// <summary>
        /// Returns whether or not the game is paused, that is, it reacts to the player's controls.
        /// </summary>
        bool IsGamePaused { get; }

        /// <summary>
        /// Displays a message in a box on the screen.
        /// </summary>
        /// <param name="message">The message to display.</param>
        void DisplayMessage(string message);
        /// <summary>
        /// Ends the current game for the given player.
        /// </summary>
        /// <param name="sender">The player to send the event.</param>
        void EndGame(Player sender);
        /// <summary>
        /// Pauses the game. This deactivates handling of player controls.
        /// </summary>
        void PauseGame();
        /// <summary>
        /// Continues the game. This activates handling of player controls.
        /// </summary>
        void ContinueGame();
    }
}
